package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
//InputStream负责读
public class IODemo7 {
    public static void main(String[] args) throws IOException {
//        InputStream inputStream = null;
//        try {
//            //打开文件
//            inputStream = new FileInputStream("./test.txt");
//            //这里还会有很多的逻辑，可能导致关闭不了文件（return/异常）
//        }finally {
//            //关闭文件(相当于资源释放)
//            inputStream.close();
 //       }

        //实现了closeable接口的类才能放到try（）里面
        try(InputStream inputStream = new FileInputStream("./test.txt")){
            //读文件
            //System.out.println(inputStream.read());
            //会尝试把buffer填满
          //  byte[] buffer = new byte[1024];
            //返回填充的个数
            //System.out.println(inputStream.read(buffer));

            //也不知道有多少个字节，使用while来完成
            while(true){
//                int x = inputStream.read();
//                if(x == -1){
                //文件读取完毕了
//                    break;
//                }
                //如果文件带有中文，此时打印出的每个字节，就是对应的utf8编码的值
//                System.out.printf("%x ",x);
                //一次读若干个字节，要比一次读一个字节更高效
                byte[] buffer = new byte[1024];
                int n = inputStream.read(buffer);
                if(n==-1){
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.printf("%x ",buffer[i]);
                }
            }
        }//一旦出了try代码块就由try自动帮我们执行close方法
    }
}
